//#include <stdio.h>
//#include <string.h>
//
//// 计算n的阶乘并存储在数组中
//void calculateFactorial(int n, int result[], int *length) {
//    // 初始化结果：0! = 1
//    result[0] = 1;
//    *length = 1;
//    
//    // 从2开始计算到n
//    for (int i = 2; i <= n; i++) {
//        int carry = 0;  // 进位
//        
//        // 用当前的i乘以数组中的每一位数字
//        for (int j = 0; j < *length; j++) {
//            int product = result[j] * i + carry;
//            result[j] = product % 10;  // 存储当前位
//            carry = product / 10;      // 计算进位
//        }
//        
//        // 处理剩余的进位
//        while (carry > 0) {
//            result[*length] = carry % 10;
//            carry = carry / 10;
//            (*length)++;
//        }
//    }
//}
//
//// 打印阶乘结果（数组中是逆序存储的）
//void printFactorial(int result[], int length) {
//    printf("结果是：\n");
//    // 从最后一位开始打印
//    for (int i = length - 1; i >= 0; i--) {
//        // 每50位换行，方便阅读
//        if ((length - 1 - i) % 50 == 0 && i != length - 1) {
//            printf("\n");
//        }
//        printf("%d", result[i]);
//    }
//    printf("\n");
//}
//
//int main(void) {
//    printf("input a number :");
//    int n;
//    scanf("%d",&n);
//    // 400!大约有869位，分配1000个元素的数组足够存储
//    int result[1000];
//    int length;  // 存储结果的位数
//    
//    calculateFactorial(n, result, &length);
//    
//    printf("%d的阶乘共有%d位\n", n, length);
//    printFactorial(result, length);
//    
//    return 0;
//}
//
